/**
 * Copyright (C) 2014 Luvina Software Company
 * UserDao.java, Dec 15, 2014, Nguyen Huu Luan LA11_AM
 *
 */
package net.luvina.manageuser.dao;

import java.util.List;

import net.luvina.manageuser.entities.TblUser;
import net.luvina.manageuser.entities.UserInfor;

/**
 * DAO dùng để thao tác với thong tin user trên bảng TblUser.
 * 
 * @author luan
 * 
 */
public interface TblUserDao extends BaseDao {

	/**
	 * Lấy thông tin user dựa trên tên đăng nhập.
	 * 
	 * @param loginName
	 *            tên đăng nhập.
	 * @param password
	 *            mật khẩu.
	 * @return thông tin của user.
	 */
	public TblUser getUserByLoginNamePassword(String loginName, String password);

	/**
	 * Lấy danh sách user.
	 * 
	 * @param offset
	 *            vị trí bắt đầu trong danh sách user.
	 * @param limit
	 *            số lượng user cần lấy.
	 * @param groupId
	 *            mã phòng ban.
	 * @param fullName
	 *            tên đầy đủ.
	 * @param sortType
	 *            trường được sắp xếp ưu tiên.
	 * @param sortByFullName
	 *            kiểu sắp xếp của trường tên: ASC hoặc DESC.
	 * @param sortByCodeLevel
	 *            kiểu sắp xếp của trường trình độ JP: ASC hoặc DESC: trường này
	 *            cần được truyền ngược tham số để đảm bảo logic thực tế.
	 * @param sortByEndDate
	 *            kiểu sắp xếp của trường ngày hết hạn chứng chỉ JP: ASC hoặc
	 *            DESC.
	 * @return
	 */
	public List<UserInfor> getListUsers(int offset, int limit, int groupId,
			String fullName, String sortType, String sortByFullName,
			String sortByCodeLevel, String sortByEndDate);

	/**
	 * Lấy về tổng số user dựa theo điểu kiện tìm kiếm.
	 * 
	 * @param groupId
	 *            mã phòng ban.
	 * @param fullName
	 *            tên đầy đủ.
	 * @return số lượng user thỏa mãn điều kiện tìm kiếm.
	 */
	public int getTotalUsers(int groupId, String fullName);

	/**
	 * Lấy về những thông tin nhất định (VD: loginName, email) của tất cả các
	 * user từ bảng TblUser.
	 * 
	 * 
	 * @return List TblUser của tất cả các user với các thông tin mong muốn.
	 */
	public List<TblUser> getSpecificInfoOfAllUser();

}
